package com.vehiclemanagement.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vehiclemanagement.entity.OperationLog;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 操作日志服务接口
 */
public interface OperationLogService extends IService<OperationLog> {

    /**
     * 保存操作日志
     *
     * @param operationLog 操作日志信息
     * @return 是否成功
     */
    boolean saveLog(OperationLog operationLog);

    /**
     * 分页查询操作日志
     *
     * @param current 当前页
     * @param size 每页大小
     * @param username 用户名（可选）
     * @param module 模块（可选）
     * @param operationType 操作类型（可选）
     * @param status 状态（可选）
     * @param startTime 开始时间（可选）
     * @param endTime 结束时间（可选）
     * @return 分页数据
     */
    IPage<OperationLog> pageLogs(Integer current, Integer size, String username, String module, 
                                Integer operationType, Integer status, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 清除指定天数之前的日志
     *
     * @param days 天数
     * @return 清除的记录数
     */
    int clearLogs(Integer days);

    /**
     * 统计用户操作次数
     *
     * @param userId 用户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 操作次数
     */
    int countUserOperations(Long userId, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 按操作类型统计
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 统计结果
     */
    List<Map<String, Object>> statisticsByOperationType(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 按模块统计
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 统计结果
     */
    List<Map<String, Object>> statisticsByModule(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 按日期统计
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 统计结果
     */
    List<Map<String, Object>> statisticsByDate(LocalDateTime startTime, LocalDateTime endTime);
} 